﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Automata.examen2
{
    public partial class Busqueda : System.Web.UI.Page
    {
        AlgoritmoBusqueda nuevaBusqueda = new AlgoritmoBusqueda();

        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (!fupBusqueda.HasFile)
                return;

            nuevaBusqueda.cargaLista(fupBusqueda.FileContent);

            if (nuevaBusqueda.LIST == null)
            {
                resultLabel.Text = "El archivo no tiene el formato correcto. <br /><br />Ejemplo correcto: 1 5 28 12 32 9";
            }
            else
            {
                resultLabel.Text = "Lista ingresada correctamente. <br /><br />Tamaño de la lista:&nbsp;&nbsp;" + nuevaBusqueda.LIST.Count + "<br />La lista esta:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                if (nuevaBusqueda.ORDERED)
                {
                    resultLabel.Text += "Ordenada<br />Algoritmo a utilizar:&nbsp;&nbsp;Binary Search";
                }
                else
                {
                    resultLabel.Text += "Desordenada<br />Algoritmo a utilizar:&nbsp;&nbsp;Brute Force";
                }

                Session["objetoBusqueda"] = nuevaBusqueda;

                valueSearchFieldSet.Visible = true;
            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            nuevaBusqueda = (AlgoritmoBusqueda)Session["objetoBusqueda"];
            string newSearchText = "";
            if (nuevaBusqueda != null)
            {
                int numberToSearch = Int32.Parse(NumberToSearch.Text);
                if (nuevaBusqueda.ORDERED)
                {
                    newSearchText = nuevaBusqueda.binarySearch(numberToSearch);
                }
                else
                {
                    newSearchText = nuevaBusqueda.bruteForce(numberToSearch);
                }
                
                resultLabel.Text = newSearchText + "<br /><br />---------------------<br /><br />" + resultLabel.Text;
            }
            else
            {
                resultLabel.Text = "Hubo un problema!";
            }
        }
    }
}